﻿#region Using

using System;
using System.Collections.Generic;
using System.Linq;
using Vk.Methods.Groups;
using Vk.Methods.Users;

#endregion

namespace Vk.Methods.News
{
    /// <summary>
    ///     Результат метода newsfeed.getBanned
    /// </summary>
    public class BannedInfo
    {
        /// <summary>
        ///     Список идентификаторов сообществ, которые пользователь скрыл из ленты новостей
        /// </summary>
        public List<int> Groups { get; set; }

        /// <summary>
        ///     Список идентификаторов друзей, которые пользователь скрыл из ленты новостей
        /// </summary>
        public List<int> Users { get; set; }

        public BannedInfo(ApiNode node)
        {
            var groups = node.SelectNodes("groups/*");
            if (groups != null && groups.Any())
            {
                Groups = groups.Select(x => x.Int()).Where(x => x.HasValue).Select(x => x.Value).ToList();
            }
            var users = node.SelectNodes("members/*");
            if (users != null && users.Any())
            {
                Users = users.Select(x => x.Int()).Where(x => x.HasValue).Select(x => x.Value).ToList();
            }
            if (Groups == null | Users == null)
                throw new Exception("Ошибка при обработке данных");
        }
    }

    /// <summary>
    ///     Расширенный результат метода newsfeed.getBanned
    /// </summary>
    public class BannedInfoExtended
    {
        /// <summary>
        ///     Список сообществ, которые пользователь скрыл из ленты новостей
        /// </summary>
        public List<Group> Groups { get; set; }

        /// <summary>
        ///     Список друзей, которые пользователь скрыл из ленты новостей
        /// </summary>
        public List<User> Users { get; set; }

        public BannedInfoExtended(ApiNode node)
        {
            var groups = node.SelectNodes("groups/*");
            if (groups != null && groups.Any())
            {
                Groups = groups.Select(x => new Group(x)).ToList();
            }
            var users = node.SelectNodes("profiles/*");
            if (users != null && users.Any())
            {
                Users = users.Select(x => new User(x)).ToList();
            }
            if (Groups == null | Users == null)
                throw new Exception("Ошибка при обработке данных");
        }
    }
}